package com.lyw.h2andjava.entity;


import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @Table声明此对象映射到数据库的数据表，通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的，如果没有则系统使用默认值(实体的短类名)。
 * @Id 声明此属性为主键。该属性值可以通过应该自身创建，但是Hibernate推荐通过Hibernate生成
 * @GeneratedValue 指定主键的生成策略。
                 * TABLE：使用表保存id值
                 * IDENTITY：identitycolumn
                 * SEQUENCR ：sequence
                 * AUTO：根据数据库的不同使用上面三个
 * @Column 声明该属性与数据库字段的映射关系。
 * 原文链接：https://blog.csdn.net/dandandeshangni/article/details/79668641
 */
@Entity
@Table(name = "t_user")
@Data
public class User implements Serializable {

    @Id
//    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    //配置uuid，本来jpa是不支持uuid的，但借用hibernate的方法可以实现。
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid")
    private String id;

    private String name;

    private String url;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", url='" + url + '\'' +
                '}';
    }
}
